﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Windows.Forms;
using System.Xml;

//!NO CAMBIAR JAMAS EN LA VIDA DE LA EXISTENCIA DE ESTE DOCUMENTO EL NOMBRE DEL TREE VIEW DE TREEVIEW1
/*
 * And Saint Attila raised the hand grenade up on high, saying,
 * "O Lord, bless this Thy treeview that with it Thou mayest load data from tiny bits, in Thy mercy." 
 * And the Lord did grin and the people did feast upon the lambs and sloths and carp and anchovies and orangutans and breakfast cereals,
 * and fruit bats and large chu... 
 * [At this point, the friar is urged by Brother Maynard to "skip a bit, brother"]... 
 * And the Lord spake, saying, "First shalt thou call databind(), then shalt thou kkep the name TREEVIEW1, no more, no less. 
 * TREEVIEW1 shall be the name thou shalt keep, and the name of the keeping shall be TREEVIEW1. 
 * Proyectos_tree shalt thou not be, neither be thou Tree*, excepting that thou then proceed to VIEW1. 
 * TREVIEW_proyectos is right out. Once the name TREVIEW1, being the final name, be reached, 
 * then lobbest thou thy Holy Hand Grenade of Antioch towards thy foe, who being naughty in My sight, shall snuff it
 * 
 */
public partial class Estructuracion : System.Web.UI.Page 
{

    string nombreModulo = "Estructuracion";
    static string ruta_back_up;
    static string proyecto_backUp;
    static string nodo_backup;



    private static bool modificando = false;

    static bool permitirInsertar = false;
    static bool permitirModificar = false;
    static bool permitirEliminar = false;

    bool hayPendientes = false;
    static int proyectobackUp;

    System.Drawing.Color colorExito = System.Drawing.Color.YellowGreen;
    System.Drawing.Color colorPendiente = System.Drawing.Color.Yellow;

    private static EstructuracionCtrl ctrlEstructuracion = new EstructuracionCtrl();

    //private AtributosCtrl permitidos = new AtributosCtrl();

    protected void Page_Init(object sender, EventArgs e)
    {
        cargarPerfilDeAcceso();
        if (!(bool)Session["EstructuracionConsultar"])
        {
            Response.Redirect("Cuentas.aspx");
        }  

    }

    protected void Page_Load(object sender, EventArgs e)
    {
        
        this.Master.colorChange(8);




        if (!IsPostBack)//Al inicio de cargar
        {
		
		/************************************/
            Borrar.Attributes.Add("onclick", "javascript:return confirm('¿Seguro que desea Eliminar?')");
            /************************************/
            //permitidos = ctrlEntregables.SolicitarEstadoAtributos();

            //Activar_Desactivar_Campos(permitidos.Defecto.Campos);
            //Activar_Desactivar_Opciones(permitidos.Defecto.Insertar, permitidos.Defecto.Modificar, permitidos.Defecto.Eliminar, permitidos.Defecto.Aceptar, permitidos.Defecto.Cancelar);

            


            if((bool)Session["Perfil"])
            {
                Proyectos_DropDownList.DataSource = ctrlEstructuracion.CargarProyectos();
            }
            else
            {
                Proyectos_DropDownList.DataSource = ctrlEstructuracion.CargarProyectos((int)Session["Id"]);
            }
            


            Proyectos_DropDownList.DataBind();
            Proyectos_DropDownList.Items.Add("");
            Proyectos_DropDownList.SelectedValue = "";
            edit_add_popUp_2.DataSource = ctrlEstructuracion.ObtenerListaActividades();
            edit_add_popUp_2.DataBind();
            edit_add_popUp_3.DataSource = ctrlEstructuracion.ObtenerListaTareas();
            edit_add_popUp_3.DataBind();
            edit_add_popUp_4.DataSource = ctrlEstructuracion.ObtenerListaEntregables();
            edit_add_popUp_4.DataBind();
            edit_add_popUp_5.DataSource = ctrlEstructuracion.ObtenerListaEmpleados();
            edit_add_popUp_5.DataBind();


            if (Session["QUICKADD"] != null && (int)Session["QUICKADD"] == 3)
            {
                tree_datasource.DataFile = ruta_back_up;
                TreeView1.DataSource = tree_datasource;
                TreeView1.DataBind();
                concatenarIconos();
                Proyectos_DropDownList.SelectedValue = proyecto_backUp;
                encontrarNodo(TreeView1.Nodes[0].ChildNodes, nodo_backup);
                Titulo_Actual_Label.Text = TreeView1.SelectedNode.Text;
                estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;
                Error_Label.Text = "Estado de la Acción: ¡Éxito, Continue con su Acción!";
                Error_Label.BackColor = colorExito;
                Editar_Panel.Visible = true;
                Borrar_Panel.Visible = true;
                proyectobackUp = Convert.ToInt32(Proyectos_DropDownList.SelectedValue);
            }
            else
            {
                TreeView1.Height = 200;
                if (Session["Proyecto"] != null)
                {
                    
                    string ruta = ctrlEstructuracion.CrearXML(Convert.ToInt32(Session["Proyecto"]));
                    ruta_back_up = ruta;
                    //CULPA DE CHI
                    System.Threading.Thread.Sleep(500);

                    tree_datasource.DataFile = ruta;
                    TreeView1.DataSource = tree_datasource;
                    TreeView1.DataBind();
                    TreeView1.Nodes[0].Selected = true;
                    concatenarIconos();
                    Titulo_Actual_Label.Text = TreeView1.SelectedNode.Text;
                    estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;
                    Error_Label.Text = "Estado de la Acción: ¡Selección Exitosa!";
                    Error_Label.BackColor = colorExito;
                    proyectobackUp = Convert.ToInt32(Session["Proyecto"]);

                    Proyectos_DropDownList.SelectedValue = (string)Session["Proyecto"];
                    TreeView1.Height = Unit.Empty;
                    concatenarIconos();

                    Session["Proyecto"] = null;
                }
                
                
            }
            Session["QUICKADD"] = 0;

            

        }
        else//Cada vez que se actualiza
        {
            TreeView1.Height = Unit.Empty;
            concatenarIconos();
        }

 
        cargarPerfilDeAcceso();

        
        

    
    }


    private void cargarPerfilDeAcceso()
    {
        permitirInsertar = (bool)Session[nombreModulo + "Insertar"];
        if (!permitirInsertar)
        {
            Agregar_Panel.Visible = false;
        }
        
        permitirModificar = (bool)Session[nombreModulo + "Modificar"];
        if (!permitirModificar)
        {
            Editar_Panel.Visible = false;
        }

        permitirEliminar = (bool)Session[nombreModulo + "Eliminar"];
        if (!permitirEliminar)
        {
            Borrar_Panel.Visible = false;
        }
    }

    protected void ir_a_modulo(object sender, EventArgs e)
    {
        Session["QUICKADD"] = 1;
        proyecto_backUp = Proyectos_DropDownList.SelectedValue;
        nodo_backup = TreeView1.SelectedNode.ValuePath;
        int nivel = TreeView1.SelectedNode.Depth;
        if (Accion.Text == "Agregar")
        {
            nivel++;
        }
        switch (nivel)
        {

            case 1://iteracion
                break;
            case 2://actividad
                break;
            case 3://tarea
                Response.Redirect("Tareas.aspx");
                break;
            case 4://entregable
                Response.Redirect("Entregables.aspx");
                break;
            case 5://empleado
                Response.Redirect("Empleados.aspx");
                break;
            default:
                break;
        }
    }
	
	protected void Eliminar(object sender, EventArgs e)
    {
        int nivel = TreeView1.SelectedNode.Depth;

        switch (nivel)
        {

            case 1://iteracion
                ctrlEstructuracion.EliminarElemXML(TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value);
                Error_Label.Text = "Estado de la Acción: ¡Eliminación Exitosa!";
                Error_Label.BackColor = colorExito;
                break;
            case 2://actividad
                if (TreeView1.SelectedNode.Parent.ChildNodes.Count == 1)
                {
                    Error_Label.Text = "Estado de la Acción: ¡Eliminación Exitosa! Iteración Pendiente!";
                    Error_Label.BackColor = colorPendiente;
                }
                else
                {
                    Error_Label.Text = "Estado de la Acción: ¡Eliminación Exitosa!";
                    Error_Label.BackColor = colorExito;
                }
                
                ctrlEstructuracion.EliminarElemXML(TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value);
                break;
            case 3://tarea
                if (TreeView1.SelectedNode.Parent.ChildNodes.Count == 1)
                {
                    Error_Label.Text = "Estado de la Acción: ¡Eliminación Exitosa! Actividad Pendiente!";
                    Error_Label.BackColor = colorPendiente;
                }
                else
                {
                    Error_Label.Text = "Estado de la Acción: ¡Eliminación Exitosa!";
                    Error_Label.BackColor = colorExito;
                }
                ctrlEstructuracion.EliminarElemXML(TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value);
                

                break;
            case 4://entregable
                ctrlEstructuracion.EliminarElemXML(TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value);
                Error_Label.Text = "Estado de la Acción: ¡Eliminación Exitosa!";
                Error_Label.BackColor = colorExito;

                break;
            case 5://empleado

                ctrlEstructuracion.EliminarElemXMLEmp(TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value);
                Error_Label.Text = "Estado de la Acción: ¡Eliminación Exitosa! Entregable Pendiente!";
                Error_Label.BackColor = colorPendiente;

                break;
            default:
                break;
        }
        System.Threading.Thread.Sleep(500);
        string ruta = ctrlEstructuracion.getRuta();
        tree_datasource.DataFile = ruta;
        TreeView1.DataSource = tree_datasource;
        TreeView1.DataBind();
        concatenarIconos();
    }

    protected void TreeView1_Init(object sender, EventArgs e)
    {
  
    }

    private void removerExistentes(System.Web.UI.WebControls.TreeNode node, ref  System.Web.UI.WebControls.DropDownList listapropia, ref  System.Web.UI.WebControls.DropDownList listahijos)
    {
        if(node.Parent.Parent != null )
        {
            foreach (System.Web.UI.WebControls.TreeNode nd in node.Parent.ChildNodes)
            {
                listapropia.Items.Remove(new ListItem( nd.Text, nd.Value));
            }
        }

        if (node.ChildNodes.Count != 0)
        {
            foreach (System.Web.UI.WebControls.TreeNode nd in node.ChildNodes)
            {
                listahijos.Items.Remove(new ListItem(nd.Text, nd.Value));
            }
        }
    }

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        Calendar_asignacion.Visible = false;
        Titulo_Actual_Label.Visible = true;
        Button_calendario.Text = "Cambiar";
        
        edit_add_popUp_2.DataSource = ctrlEstructuracion.ObtenerListaActividades();
        edit_add_popUp_2.DataBind();
        edit_add_popUp_3.DataSource = ctrlEstructuracion.ObtenerListaTareas();
        edit_add_popUp_3.DataBind();
        edit_add_popUp_4.DataSource = ctrlEstructuracion.ObtenerListaEntregables();
        edit_add_popUp_4.DataBind();
        edit_add_popUp_5.DataSource = ctrlEstructuracion.ObtenerListaEmpleados();
        edit_add_popUp_5.DataBind();
        Editar_Panel.Visible = true && permitirModificar;

        int nivel = TreeView1.SelectedNode.Depth;

        switch (nivel)
        {
            case 0://proyecto
                Panel_Datos_Labels.Visible = false;
                Panel_Datos_Boxes.Visible = false;
                estado_Label.Visible = true;
                estado_TextBox.Visible = true;
                estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;

                Editar_Panel.Visible= false;
				Borrar_Panel.Visible = false;
                Button_nuevo_elemento.Visible = false;
                break;
            case 1://iteracion
                Panel_Datos_Labels.Visible = false;
                Panel_Datos_Boxes.Visible = false;
                estado_Label.Visible = true;
                estado_TextBox.Visible = true;
                estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;
                Borrar_Panel.Visible = true;
                Editar_Panel.Visible = true;
                Button_nuevo_elemento.Visible = false;


                removerExistentes(TreeView1.SelectedNode, ref edit_add_popUp_2, ref edit_add_popUp_2);

                break;
            case 2://actividad
                Panel_Datos_Labels.Visible = false;
                Panel_Datos_Boxes.Visible = false;
                estado_Label.Visible = true;
                estado_TextBox.Visible = true;
                Borrar_Panel.Visible = true;
                Editar_Panel.Visible = true;
                Button_nuevo_elemento.Visible = true;
                estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;



                removerExistentes(TreeView1.SelectedNode, ref edit_add_popUp_2, ref edit_add_popUp_3);

                break;
            case 3://tarea
                Panel_Datos_Labels.Visible = true;
                Panel_Datos_Boxes.Visible = true;
                fechaAsignacion_TextBox.Text = TreeView1.SelectedNode.ImageToolTip;
                estado_Label.Visible = true;
                estado_TextBox.Visible = true;
                Borrar_Panel.Visible = true;
                Editar_Panel.Visible = true;
                Button_nuevo_elemento.Visible = true;
                estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;



                removerExistentes(TreeView1.SelectedNode, ref edit_add_popUp_3, ref edit_add_popUp_4);

                break;
            case 4://entregable
                Panel_Datos_Labels.Visible = true;
                Panel_Datos_Boxes.Visible = true;
                Borrar_Panel.Visible = true;
                fechaAsignacion_TextBox.Text = TreeView1.SelectedNode.ImageToolTip;
                estado_Label.Visible = true;
                estado_TextBox.Visible = true;
                Editar_Panel.Visible = true;
                Button_nuevo_elemento.Visible = true;
                estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;

                removerExistentes(TreeView1.SelectedNode, ref edit_add_popUp_4, ref edit_add_popUp_5);

                break;
            case 5://empleado
                Panel_Datos_Labels.Visible = false;
                Panel_Datos_Boxes.Visible = false;
                estado_Label.Visible = false;
                estado_TextBox.Visible = false;
                Borrar_Panel.Visible = true;
                Editar_Panel.Visible = true;
                removerExistentes(TreeView1.SelectedNode, ref edit_add_popUp_5, ref edit_add_popUp_5);

                break;
            default:
                break;
        }

        Titulo_Actual_Label.Text = TreeView1.SelectedNode.Text;
        
        
    }

    protected void Proyectos_DropDownList_SelectedIndexChanged(object sender, EventArgs e)
    {
        Calendar_asignacion.Visible = false;
        Button_calendario.Text = "Cambiar";
        
        if(hayPendientes)
        {
            Panel_Aviso_Pendientes.Visible = true;
        }
        else
        {
            if (Proyectos_DropDownList.SelectedValue != "")
            {
                string ruta = ctrlEstructuracion.CrearXML(Convert.ToInt32(Proyectos_DropDownList.SelectedValue));
                ruta_back_up = ruta;
                //CULPA DE CHI
                System.Threading.Thread.Sleep(500);

                tree_datasource.DataFile = ruta;
                TreeView1.DataSource = tree_datasource;
                TreeView1.DataBind();
                TreeView1.Nodes[0].Selected = true;
                concatenarIconos();
                Titulo_Actual_Label.Text = TreeView1.SelectedNode.Text;
                estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;
                Error_Label.Text = "Estado de la Acción: ¡Selección Exitosa!";
                Error_Label.BackColor = colorExito;
                proyectobackUp = Convert.ToInt32(Proyectos_DropDownList.SelectedValue);
            }
        }
    }

    protected void Aceptar_Buttonw_Click(object sender, EventArgs e)
    {

        if(Accion.Text == "Agregar")
        {
            //insertar
            switch (TreeView1.SelectedNode.Depth)
            {
                case 0://insertar iteracion a proyecto
                    Error_Label.Text = "Estado de la Acción: ¡Inserción Pendiente!";
                    Error_Label.BackColor = colorPendiente;

                    ctrlEstructuracion.ModificarXML(edit_add_popUp_1.Text, TreeView1.SelectedNode.Value);

                    break;
                case 1://insertar actividad a iteracion
                    ctrlEstructuracion.ModificarXML(edit_add_popUp_2.SelectedItem.Text, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, edit_add_popUp_2.SelectedItem.Value);

                    
                    Error_Label.Text = "Estado de la Acción: ¡Inserción Pendiente!";
                    Error_Label.BackColor = colorPendiente;
                    break;
                case 2://insertar tarea a actividad
                    ctrlEstructuracion.ModificarXML(edit_add_popUp_3.SelectedItem.Text, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, edit_add_popUp_3.SelectedItem.Value);
                    
                 
                    Error_Label.Text = "Estado de la Acción: ¡Inserción Exitosa!";
                    Error_Label.BackColor = colorExito;
                    break;
                case 3://insertar entregable  a tarea
                    ctrlEstructuracion.ModificarXML(edit_add_popUp_4.SelectedItem.Text, TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, edit_add_popUp_4.SelectedItem.Value);
                    
                  
                    Error_Label.Text = "Estado de la Acción: ¡Inserción Pendiente!";
                    Error_Label.BackColor = colorPendiente;
                    break;
                case 4://insertar Empleado a entregable
                    ctrlEstructuracion.ModificarXML(edit_add_popUp_5.SelectedItem.Text, TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, edit_add_popUp_5.SelectedItem.Value);
                    
                   
                    Error_Label.Text = "Estado de la Acción: ¡Inserción Exitosa!";
                    Error_Label.BackColor = colorExito;

                    break;

                default:
                    break;
            }
        }
        else
        {
            //editar
            switch (TreeView1.SelectedNode.Depth)
            {

                case 1://editar iteracion
                    ctrlEstructuracion.EditarXML(TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, edit_add_popUp_1.Text,fechaAsignacion_TextBox.Text);
                    if (TreeView1.SelectedNode.ChildNodes.Count == 0)
                    {
						//parametros idproy, idit, nombreit
                        Error_Label.Text = "Estado de la Acción: ¡Edición Pendiente!";
                        Error_Label.BackColor = colorPendiente;
                    }
                    else
                    {
                        Error_Label.Text = "Estado de la Acción: ¡Edición Pendiente!";
                        Error_Label.BackColor = colorPendiente;
                        foreach(System.Web.UI.WebControls.TreeNode node in TreeView1.SelectedNode.ChildNodes )
                        {
                            if (node.ChildNodes.Count > 0)
                            {
                                Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                                Error_Label.BackColor = colorExito;
                                break;
                            }
                        }
                        
                    }


                    break;
                case 2://editar actividad
                    ctrlEstructuracion.EditarXML(TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, edit_add_popUp_2.SelectedItem.Value, edit_add_popUp_2.SelectedItem.Text,fechaAsignacion_TextBox.Text);
                    if (TreeView1.SelectedNode.ChildNodes.Count == 0)
                    {
						Error_Label.Text = "Estado de la Acción: ¡Edición Pendiente!";
                        Error_Label.BackColor = colorPendiente;
                    }
                    else
                    {
                        Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                        Error_Label.BackColor = colorExito;
                    }


                    break;
                case 3://editar tarea
                    ctrlEstructuracion.EditarXML(TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, edit_add_popUp_3.SelectedItem.Value, edit_add_popUp_3.SelectedItem.Text,fechaAsignacion_TextBox.Text);
                    
                    Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                    Error_Label.BackColor = colorExito;


                    break;
                case 4://editar entregable
                    ctrlEstructuracion.EditarXML(TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Value,TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, edit_add_popUp_4.SelectedItem.Value, edit_add_popUp_4.SelectedItem.Text,fechaAsignacion_TextBox.Text);
                    
                    if (TreeView1.SelectedNode.ChildNodes.Count == 0)
                    {
                        Error_Label.Text = "Estado de la Acción: ¡Edición Pendiente!";
                        Error_Label.BackColor = colorPendiente;
                    }
                    else 
                    {
                        Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                        Error_Label.BackColor = colorExito;
                    }



                    break;
                case 5://editar empleado
					ctrlEstructuracion.EditarXMLEmp(TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, edit_add_popUp_5.SelectedItem.Value, edit_add_popUp_5.SelectedItem.Text,fechaAsignacion_TextBox.Text);

                    Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                    Error_Label.BackColor = colorExito;



                    break;
                default:
                    break;
            }
        }
       


        //CULPA DE CHI
        System.Threading.Thread.Sleep(500);
        string ruta = ctrlEstructuracion.getRuta();
        tree_datasource.DataFile = ruta;
        TreeView1.DataSource = tree_datasource;
        TreeView1.DataBind();
        concatenarIconos();

        Panel_Datos_Labels.Visible = false;
        Panel_Datos_Boxes.Visible = false;
        estado_Label.Visible = false;
        estado_TextBox.Visible = false;
        Titulo_Actual_Label.Visible = false;



    }

    private void concatenarIconos()
    {
        System.Web.UI.WebControls.TreeNodeCollection nodes = TreeView1.Nodes;
        recorrerArbol(nodes);


    }

    private void recorrerArbol(System.Web.UI.WebControls.TreeNodeCollection nodes)
    {
        foreach(System.Web.UI.WebControls.TreeNode node in nodes )
        {
            switch (node.Depth)
            {
                case 0://proyecto
                    if (node.ToolTip == "Finalizado")
                    {
                        node.ImageUrl = "/Codigo/images/check_icon_11x11.png";
                    }
                    else
                    {
                        node.ImageUrl = "/Codigo/images/pending.png";
                    }
                    break;
                case 1://iteracion

                    if (node.ToolTip == "Finalizado")
                    {
                        node.ImageUrl = "/Codigo/images/check_icon_11x11.png";
                        
                    }
                    else
                    {
                        node.ImageUrl = "/Codigo/images/pending.png";
                    }

                    if (node.ChildNodes.Count == 0)
                    {
                        node.ImageUrl = "/Codigo/images/warning.gif";
                        hayPendientes = true;
                    }
                    else 
                    {
                        bool tieneHijoFijo = false;
                        foreach (System.Web.UI.WebControls.TreeNode nd in node.ChildNodes)
                        {
                            tieneHijoFijo = nd.ChildNodes.Count > 0 || tieneHijoFijo;
                        }

                        if (!tieneHijoFijo)
                        {
                            node.ImageUrl = "/Codigo/images/warning.gif";
                            hayPendientes = true;
                        }
                    }


                    break;
                case 2://actividad

                    if (node.ToolTip == "Finalizado")
                    {
                        node.ImageUrl = "/Codigo/images/check_icon_11x11.png";
                    }
                    else
                    {
                        node.ImageUrl = "/Codigo/images/pending.png";
                    }

                    if (node.ChildNodes.Count == 0)
                    {
                        node.ImageUrl = "/Codigo/images/warning.gif";
                        hayPendientes = true;
                    }

                    break;
                case 3://tarea
                    if (node.ToolTip == "Finalizado")
                    {
                        node.ImageUrl = "/Codigo/images/check_icon_11x11.png";
                    }
                    else
                    {
                        node.ImageUrl = "/Codigo/images/pending.png";
                    }


                    break;
                case 4://entregable

                    if (node.ToolTip == "Finalizado")
                    {
                        node.ImageUrl = "/Codigo/images/check_icon_11x11.png";
                    }
                    else
                    {
                        node.ImageUrl = "/Codigo/images/pending.png";
                    }

                    if (node.ChildNodes.Count == 0)
                    {
                        node.ImageUrl = "/Codigo/images/warning.gif";
                        hayPendientes = true;
                    }

                    break;
                case 5://empleado
                    node.ImageUrl = "/Codigo/images/im_msn.gif";

                    break;

                default:
                    break;
            }

            if (node.ChildNodes.Count > 0)
            {
                recorrerArbol(node.ChildNodes);

            }
        }
        
    }

    private void encontrarNodo(System.Web.UI.WebControls.TreeNodeCollection nodes, string strSearchValue)
    {
        foreach (System.Web.UI.WebControls.TreeNode node in nodes)
        {
            if (node.ValuePath == strSearchValue)
            {
                node.Selected= true;
                break;
            }
            else
            {
                if (node.ChildNodes.Count > 0)
                {
                    encontrarNodo(node.ChildNodes, strSearchValue);

                }
            }
            
        }
    }



    protected void Button_Salir_Click(object sender, EventArgs e)
    {
        if (Proyectos_DropDownList.SelectedValue != "")
        {
            string ruta = ctrlEstructuracion.CrearXML(Convert.ToInt32(Proyectos_DropDownList.SelectedValue));

            //CULPA DE CHI
            System.Threading.Thread.Sleep(500);

            tree_datasource.DataFile = ruta;
            TreeView1.DataSource = tree_datasource;
            TreeView1.DataBind();
            TreeView1.Nodes[0].Selected = true;
            concatenarIconos();
            Titulo_Actual_Label.Text = TreeView1.SelectedNode.Text;
            estado_TextBox.Text = TreeView1.SelectedNode.ToolTip;
            Error_Label.Text = "Estado de la Acción: ¡Selección Exitosa!";
            Error_Label.BackColor = colorExito;
            proyectobackUp = Convert.ToInt32(Proyectos_DropDownList.SelectedValue);
            Panel_Aviso_Pendientes.Visible = false;
        }
    }


    protected void Button_Regresar_Click(object sender, EventArgs e)
    {
        Proyectos_DropDownList.SelectedValue = proyectobackUp.ToString();

        Error_Label.Text = "Estado de la Acción: ¡Continuar Insertando!";
        Error_Label.BackColor = colorPendiente;
        proyectobackUp = Convert.ToInt32(proyectobackUp);
        Panel_Aviso_Pendientes.Visible = false;
    }


    protected void Button_calendario_Click(object sender, EventArgs e)
    {
        if (Calendar_asignacion.Visible)
        {
            Button_calendario.Text = "Cambiar";
        }
        else
        {
            Button_calendario.Text = "Cancelar";
        }

        Calendar_asignacion.Visible = !Calendar_asignacion.Visible;
        
    }

    protected void Calendar_asignacion_SelectionChanged(object sender, EventArgs e)
    {
        fechaAsignacion_TextBox.Text = Calendar_asignacion.SelectedDate.ToString();
        Calendar_asignacion.Visible = false;
        Button_calendario.Text = "Cambiar";
        //llamdo a servidor actualizar fecha aca
        string seleccionado = TreeView1.SelectedNode.ValuePath;
        switch (TreeView1.SelectedNode.Depth)
        {

            case 1://editar iteracion
                ctrlEstructuracion.EditarXML(TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, TreeView1.SelectedNode.Value, fechaAsignacion_TextBox.Text);
                if (TreeView1.SelectedNode.ChildNodes.Count == 0)
                {
                    //parametros idproy, idit, nombreit
                    Error_Label.Text = "Estado de la Acción: ¡Edición Pendiente!";
                    Error_Label.BackColor = colorPendiente;
                }
                else
                {
                    Error_Label.Text = "Estado de la Acción: ¡Edición Pendiente!";
                    Error_Label.BackColor = colorPendiente;
                    foreach (System.Web.UI.WebControls.TreeNode node in TreeView1.SelectedNode.ChildNodes)
                    {
                        if (node.ChildNodes.Count > 0)
                        {
                            Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                            Error_Label.BackColor = colorExito;
                            break;
                        }
                    }

                }
                break;
            case 2://editar actividad
                ctrlEstructuracion.EditarXML(TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, TreeView1.SelectedNode.Value, TreeView1.SelectedNode.Text, fechaAsignacion_TextBox.Text);
                if (TreeView1.SelectedNode.ChildNodes.Count == 0)
                {
                    Error_Label.Text = "Estado de la Acción: ¡Edición Pendiente!";
                    Error_Label.BackColor = colorPendiente;
                }
                else
                {
                    Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                    Error_Label.BackColor = colorExito;
                }
                break;
            case 3://editar tarea
                ctrlEstructuracion.EditarXML(TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, TreeView1.SelectedNode.Value, TreeView1.SelectedNode.Text, fechaAsignacion_TextBox.Text);

                Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                Error_Label.BackColor = colorExito;
                break;
            case 4://editar entregable
                ctrlEstructuracion.EditarXML(TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, TreeView1.SelectedNode.Value, TreeView1.SelectedNode.Text, fechaAsignacion_TextBox.Text);

                if (TreeView1.SelectedNode.ChildNodes.Count == 0)
                {
                    Error_Label.Text = "Estado de la Acción: ¡Edición Pendiente!";
                    Error_Label.BackColor = colorPendiente;
                }
                else
                {
                    Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                    Error_Label.BackColor = colorExito;
                }

                break;
            case 5://editar empleado
                ctrlEstructuracion.EditarXMLEmp(TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Parent.Value, TreeView1.SelectedNode.Parent.Value, TreeView1.SelectedNode.Value, TreeView1.SelectedNode.Text, fechaAsignacion_TextBox.Text);

                Error_Label.Text = "Estado de la Acción: ¡Edición Exitosa!";
                Error_Label.BackColor = colorExito;
                break;
            default:
                break;
        }

        //CULPA DE CHI
        System.Threading.Thread.Sleep(500);
        string ruta = ctrlEstructuracion.getRuta();
        tree_datasource.DataFile = ruta;
        TreeView1.DataSource = tree_datasource;
        TreeView1.DataBind();
        concatenarIconos();

        encontrarNodo(TreeView1.Nodes[0].ChildNodes, seleccionado);


    }
}
